﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using Crosland.Automotriz.Logic.Linq;
using DevExpress.Web.ASPxEditors;
using Crosland.Automotriz.Entidad;
using Subgurim.Controles;

namespace Crosland.Automotriz.Web.CRM
{
    public partial class wFrmClienteRegistrar : System.Web.UI.Page
    {
        string idGestionComercial = ConfigurationManager.AppSettings["GestionComercial"];
        clsTD_ClienteBL blCliente = new clsTD_ClienteBL();
        readonly clsTD_Cliente_LocalBL blLocal = new clsTD_Cliente_LocalBL();
        const string scriptCorrecto = "MostrarCorrecto();";
        const string scriptError = "MostrarAlerta();";


        protected void Page_Load(object sender, EventArgs e)
        {
            if (Page.IsPostBack == false)
            {
                ListarTipoDocumento();
                ListarZonaRegistral();
                cboZonaRegistral_SelectedIndexChanged(null, null);
                ListarDepartamento();
                ListarVendedor();
                ListarOrganizacion();
                ListarRazonesSociales();
                cboOrganizacion_SelectedIndexChanged(null, null);
                Listar();
                ListarLocales();
                Panel img = (Panel)Master.FindControl("asp");
                img.Visible = false;
                if (Request.QueryString["idCliente"] != null)
                {
                    int idCliente = int.Parse(Request.QueryString["idCliente"]);
                    TD_CLIENTE cli = blCliente.Listar(idCliente);
                    if (cli != null)
                    {
                        lblCodigoCliente.Text = cli.COD_CLIENTE;
                        txtNombreComercial.Text = cli.NOM_COMERCIAL;
                        txtRazonSocial.Text = cli.DES_CLIENTE;
                        cboTipoDocumento.Value = cli.COD_TIPO_NIF;
                        txtNumeroDocumento.Text = cli.NIF;
                        txtDireccion.Text = cli.DES_DIRECCION;
                        txtTelefono1.Text = cli.Telefono;
                        txtTelefono2.Text = cli.Telefono2;

                        if (cli.Departamento != null)
                        {
                            lblDepartamento.Text = cli.Departamento.ToUpper();
                        }
                        if (cli.Provincia != null)
                        {
                            lblProvincia.Text = cli.Provincia.ToUpper();
                        }
                        if (cli.Distrito != null)
                        {
                            lblDistrito.Text = cli.Distrito.ToUpper();
                        }
                        if (cli.Departamento != null)
                        {
                            cboDepartamento.Text = cli.Departamento.ToUpper();
                            cboDepartamento_SelectedIndexChanged(null, null);
                        }
                        if (cli.Provincia != null)
                        {
                            cboProvincia.Text = cli.Provincia.ToUpper();
                            cboProvincia_SelectedIndexChanged(null, null);
                        }
                        if (cli.Distrito != null)
                        {
                            cboDistrito.Text = cli.Distrito;
                        }

                        if (cli.COD_ZONA_REGISTRAL == null)
                        {
                            cboZonaRegistral.SelectedIndex = 0;
                        }
                        else
                        {
                            cboZonaRegistral.Text = cli.COD_ZONA_REGISTRAL;
                            cboZonaRegistral_SelectedIndexChanged(null, null);
                        }
                        if (cli.Id_OficinaRegistral == null)
                        {
                            cboOficinaRegistral.SelectedIndex = 0;
                        }
                        else 
                        {
                            cboOficinaRegistral.Text = cli.Id_OficinaRegistral.ToString();
                        }


                        btnRegistrar.Text = "Actualizar";
                        ASPxPageControl1.TabPages[1].Enabled = true;
                        ASPxPageControl1.TabPages[2].Enabled = true;
                        ASPxPageControl1.TabPages[3].Enabled = true;
                    }
                }
                else 
                {
                    ASPxPageControl1.TabPages[1].Enabled = false;
                    ASPxPageControl1.TabPages[2].Enabled = false;
                    ASPxPageControl1.TabPages[3].Enabled = false;
                }
            }
        }

        void ListarTipoDocumento()
        {
            clsTD_Tipo_NifBL bl = new clsTD_Tipo_NifBL();
            cboTipoDocumento.DataSource = bl.Listar();
            cboTipoDocumento.TextField = "DES_TIPO_NIF";
            cboTipoDocumento.ValueField = "COD_TIPO_NIF";
            cboTipoDocumento.DataBind();

            ListEditItem l = new ListEditItem() { Text = "Seleccionar", Value = "" };
            cboTipoDocumento.Items.Insert(0, l);
            cboTipoDocumento.SelectedIndex = 0;
        }

        void ListarZonaRegistral()
        {
            clsTD_Zona_RegistralBL bl = new clsTD_Zona_RegistralBL();
            cboZonaRegistral.DataSource = bl.Listar();
            cboZonaRegistral.TextField = "DES_ZONA_REGISTRAL";
            cboZonaRegistral.ValueField = "COD_ZONA_REGISTRAL";
            cboZonaRegistral.DataBind();

            ListEditItem l = new ListEditItem() { Text = "Seleccionar", Value = "" };
            cboZonaRegistral.Items.Insert(0, l);
            cboZonaRegistral.SelectedIndex = 0;
        }

        void ListarDepartamento()
        {
            clsTD_UbigeoBL UbigeoBL = new clsTD_UbigeoBL();
            cboDepartamento.DataSource = UbigeoBL.ListarDepartamento();
            cboDepartamento.TextField = "DES_DEPARTAMENTO";
            cboDepartamento.ValueField = "COD_DEPARTAMENTO";
            cboDepartamento.DataBind();

            ListEditItem l = new ListEditItem() { Text = "Seleccionar", Value = "" };
            cboDepartamento.Items.Insert(0, l);
            cboDepartamento.SelectedIndex = 0;
        }

        void ListarProvincia()
        {
            try
            {
                string COD_DEPARTAMENTO = cboDepartamento.SelectedItem.Value.ToString();
                clsTD_UbigeoBL UbigeoBL = new clsTD_UbigeoBL();
                cboProvincia.DataSource = UbigeoBL.ListarProvincia(COD_DEPARTAMENTO);
                cboProvincia.TextField = "DES_PROVINCIA";
                cboProvincia.ValueField = "COD_PROVINCIA";
                cboProvincia.DataBind();

                ListEditItem l = new ListEditItem() { Text = "Seleccionar", Value = "" };
                cboProvincia.Items.Insert(0, l);
                cboProvincia.SelectedIndex = 0;
            }
            catch (Exception)
            {

            }
        }

        void ListarDistrito()
        {
            try
            {
                string COD_PROVINCIA = cboProvincia.SelectedItem.Value.ToString();
                clsTD_UbigeoBL UbigeoBL = new clsTD_UbigeoBL();
                cboDistrito.DataSource = UbigeoBL.ListarDistrito(COD_PROVINCIA);
                cboDistrito.TextField = "DES_DISTRITO";
                cboDistrito.ValueField = "ID_UBIGEO";
                cboDistrito.DataBind();

                ListEditItem l = new ListEditItem() { Text = "Seleccionar", Value = "" };
                cboDistrito.Items.Insert(0, l);
                cboDistrito.SelectedIndex = 0;
            }
            catch (Exception)
            {

            }

        }

        void ListarVendedor()
        {
            clsTD_VendedorBL oVen = new clsTD_VendedorBL();
            cboSupervisor.DataSource = oVen.ListaVendedor();
            cboSupervisor.TextField = "NOMBRE_APELLIDO";
            cboSupervisor.ValueField = "ID_VENDEDOR";
            cboSupervisor.DataBind();
            cboSupervisor.SelectedIndex = 0;
        }

        void ListarOrganizacion()
        {
            clsTd_Org_VtaLogic oOrg = new clsTd_Org_VtaLogic();
            cboOrganizacion.DataSource = oOrg.lista();
            cboOrganizacion.TextField = "DES_ORG_VTA";
            cboOrganizacion.ValueField = "ID_ORG_VTA";
            cboOrganizacion.DataBind();
            cboOrganizacion.SelectedIndex = 0;
        }

        void ListarCanal()
        {
            int ID_ORG_VTA = int.Parse(cboOrganizacion.SelectedItem.Value.ToString());
            clsTd_Canal_DistribLogic oCanal = new clsTd_Canal_DistribLogic();
            cboCanal.DataSource = oCanal.ListarCanalxOrganizacion(ID_ORG_VTA);
            cboCanal.TextField = "DES_CANAL_DISTRIB";
            cboCanal.ValueField = "ID_CANAL_DISTRIB";
            cboCanal.DataBind();
            cboCanal.SelectedIndex = 0;
            if (cboCanal.Items.Count == 0)
            {
                cboCanal.Enabled = false;
                btnAgregar.Enabled = false;
            }
            else
            {
                cboCanal.Enabled = true;
                btnAgregar.Enabled = true;
            }
        }

        void Listar()
        {
            if (Request.QueryString["idCliente"] != null)
            {
                int idCliente = int.Parse(Request.QueryString["idCliente"]);
                clsT_CLIENTE_VENDEDORBL ocv = new clsT_CLIENTE_VENDEDORBL();
                gv.DataSource = ocv.ListarClienteVendedor(idCliente);
                gv.DataBind();
            }
        }

        void ListarRazonesSociales()
        {
            if (Request.QueryString["idCliente"] != null)
            {
                int idCliente = int.Parse(Request.QueryString["idCliente"]);

                List<TD_CLIENTE> cli = new List<TD_CLIENTE>();
                cli = blCliente.ListarRazonesSociales(idCliente);
                gvRazonesSociales.DataSource = cli;
                gvRazonesSociales.DataBind();
                gvRazonesSociales.FocusedRowIndex = -1;
            }
        }

        void ListarLocales()
        {
            if (Request.QueryString["idCliente"] != null)
            {
                int Id_Cliente = int.Parse(Request.QueryString["idCliente"]);

                grdLocales.DataSource = blLocal.Listar(Id_Cliente);
                grdLocales.DataBind();
                grdLocales.FocusedRowIndex = -1;
            }
        }

        protected void CargarLocales()
        {
            if (Request.QueryString["idCliente"] != null)
            {
                int Id_Cliente = int.Parse(Request.QueryString["idCliente"]);

                //mapa.resetMarkers();
                //Se comento este codigo por MANUEL ROJAS MAGUIÑA
                //{ 
                    //mapa.enableDragging = true;
                    //mapa.enableHookMouseWheelToZoom = true;
                    //mapa.setCenter(new GLatLng(-9.750000, -76.000000), 5);
                    //mapa.addControl(new GControl(GControl.preBuilt.GOverviewMapControl));
                    //mapa.addGMapUI(new GMapUI());
                    //mapa.GZoom = 5;
                //}
                
                List<TD_LocalesCliente> list = blLocal.Listar(Id_Cliente);

                //Se agrego este codigo por MANUEL ROJAS MAGUIÑA
                //{ 
                    string LatLongIco = "";
                //}
                foreach (TD_LocalesCliente item in list)
                {
                    if (!string.IsNullOrEmpty(item.NUM_COORDENADA_X) && !string.IsNullOrEmpty(item.NUM_COORDENADA_Y))
                    {
                        GMarker marker = new GMarker(new GLatLng(double.Parse(item.NUM_COORDENADA_X), double.Parse(item.NUM_COORDENADA_Y)));

                        string texto = String.Format(CadenaHtml.HtmlLocal, item.ESTABLECIMIENTO,
                            item.DEPARTAMENTO, item.PROVINCIA, item.DISTRITO,
                            item.DIRECCION, item.ID_LOCAL);

                        //Se comento este codigo por MANUEL ROJAS MAGUIÑA
                        //{ 
                            //GInfoWindow window = new GInfoWindow(marker, texto, false);
                            //mapa.addInfoWindow(window);
                        //}

                        //Se agrego este codigo por MANUEL ROJAS MAGUIÑA
                        //{
                            LatLongIco = LatLongIco + item.NUM_COORDENADA_X +
                                    "*" + item.NUM_COORDENADA_Y +
                                    "*" + "sinicono" +
                                    "*" + "" +
                                    "*" + item.ESTABLECIMIENTO +
                                    "*" + item.DEPARTAMENTO +
                                    "*" + item.PROVINCIA +
                                    "*" + item.DISTRITO +
                                    "*" + item.DIRECCION +
                                    "*" + "" +
                                    "*" + item.ID_LOCAL +
                                    "*" + item.ID_CLIENTE +
                                    "==";
                        //}
                    }
                }
                //Se agrego este codigo por MANUEL ROJAS MAGUIÑA
                //{
                    Session.Remove("LatLongIco");
                    Session["LatLongIco"] = LatLongIco.Substring(0, LatLongIco.Length - 2);
                    Session["Zoom"] = 8;

                //}
            }
        }

        protected string ObtenerIdUnico(Control ctrl)
        {
            string sId = ctrl.UniqueID;
            if (sId == null)
            {
                return null;
            }
            if (sId.IndexOf(':') >= 0)
            {
                return sId.Replace(':', '$');
            }
            return sId;
        }

        protected void lnkVerMapa_Click(object sender, EventArgs e)
        {

            int indice = grdLocales.FocusedRowIndex;
            string lat = grdLocales.GetRowValues(indice, "NUM_COORDENADA_X").ToString();
            string lng = grdLocales.GetRowValues(indice, "NUM_COORDENADA_Y").ToString();
            string establecimiento = grdLocales.GetRowValues(indice, "ESTABLECIMIENTO").ToString();
            string direccion = grdLocales.GetRowValues(indice, "DIRECCION").ToString();
            string departamento = grdLocales.GetRowValues(indice, "DEPARTAMENTO").ToString();
            string provincia = grdLocales.GetRowValues(indice, "PROVINCIA").ToString();
            string distrito = grdLocales.GetRowValues(indice, "DISTRITO").ToString();
            string id_local = grdLocales.GetRowValues(indice, "ID_LOCAL").ToString();

            //Se agrego este codigo por MANUEL ROJAS MAGUIÑA
            //{ 
                string LatLongIco = "";
            //}

            if (lat == "0" || lng == "0")
            {
                //Se comento este codigo por MANUEL ROJAS MAGUIÑA
                //{ 
                    //mapa2.resetMarkers();
                    //mapa2.setCenter(new GLatLng(-9.750000, -76.000000), 5);
                    //mapa2.enableDragging = true;
                    //mapa2.enableHookMouseWheelToZoom = true;
                //}
                PopupMapaIndividual.ShowOnPageLoad = true;
                PopupMapaIndividual.HeaderText = "Mapa";
            }
            else
            {
                GMarker marker = new GMarker(new GLatLng(double.Parse(lat), double.Parse(lng)));
                string texto = String.Format(CadenaHtml.HtmlLocal, establecimiento, departamento, provincia, distrito, direccion, id_local);
               
                //Se comento este codigo por MANUEL ROJAS MAGUIÑA
                //{
                    //GInfoWindow window = new GInfoWindow(marker, texto, false);
                    //mapa2.resetMarkers();
                    //mapa2.addInfoWindow(window);
                    //mapa2.setCenter(new GLatLng(double.Parse(lat), double.Parse(lng)), 16);
                    //mapa2.enableDragging = true;
                    //mapa2.enableHookMouseWheelToZoom = true;
                //}
                PopupMapaIndividual.ShowOnPageLoad = true;
                PopupMapaIndividual.HeaderText = "Mapa - " + direccion.Trim();
            }

            LatLongIco = LatLongIco + lat +
            "*" + lng +
            "*" + "sinicono" +
            "*" + "" +
            "*" + establecimiento +
            "*" + departamento +
            "*" + provincia +
            "*" + distrito +
            "*" + direccion +
            "*" + "" +
            "*" + direccion +
            "*" + "" +
            "==";

            //Se agrego este codigo por MANUEL ROJAS MAGUIÑA
            //{
                Session.Remove("LatLongIco");
                Session["LatLongIco"] = LatLongIco.Substring(0, LatLongIco.Length - 2);
                Session["Zoom"] = 16;
            //}
        }

        protected void btnSalir_Click(object sender, EventArgs e)
        {
            string busqueda = "";
            if (Request.QueryString["busqueda"] != null)
            {
                busqueda = Request.QueryString["busqueda"];
            }
            Response.Redirect("wFrmCliente.aspx?id=" + idGestionComercial + "&busqueda=" + busqueda);
        }

        protected void cboDepartamento_SelectedIndexChanged(object sender, EventArgs e)
        {
            ListarProvincia();
            cboProvincia.Enabled = true;
            cboProvincia.Focus();
        }

        protected void cboProvincia_SelectedIndexChanged(object sender, EventArgs e)
        {
            ListarDistrito();
            cboDistrito.Enabled = true;
            cboDistrito.Focus();
        }

        protected void btnRegistrar_Click(object sender, EventArgs e)
        {
            clsTD_Zona_RegistralBL zbl = new clsTD_Zona_RegistralBL();
            clsTD_Tipo_NifBL nbl = new clsTD_Tipo_NifBL();
            TD_CLIENTE cli = new TD_CLIENTE();
            clsTD_ClienteBL bl = new clsTD_ClienteBL();

            if (string.IsNullOrEmpty(txtNombreComercial.Text.Trim()))
            {
                lblMensajeError.Text = "Debe ingresar el nombre comercial";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "x", scriptError, true);
                txtNombreComercial.Focus();
                return;
            }
            if (string.IsNullOrEmpty(txtRazonSocial.Text.Trim()))
            {
                lblMensajeError.Text = "Debe ingresar la razón social";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "x", scriptError, true);
                txtRazonSocial.Focus();
                return;
            }
            if (cboTipoDocumento.SelectedIndex == 0)
            {
                lblMensajeError.Text = "Debe seleccionar el tipo de documento";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "x", scriptError, true);
                cboTipoDocumento.Focus();
                return;
            }
            if (string.IsNullOrEmpty(txtNumeroDocumento.Text.Trim()))
            {
                lblMensajeError.Text = "Debe ingresar el número de documento";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "x", scriptError, true);
                txtNumeroDocumento.Focus();
                return;
            }
            if (Request.QueryString["idCliente"] == null)//registrando
            {
                //Verificar existencia del documento de identidad
                if (bl.ExisteDocumentoIdentidad(txtNumeroDocumento.Text.Trim()))
                {
                    lblMensajeError.Text = "Este cliente ya existe! Documento N°: " + txtNumeroDocumento.Text.Trim();
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "x", scriptError, true);
                    txtNumeroDocumento.Focus();
                    return;
                }
            }
            if (string.IsNullOrEmpty(txtDireccion.Text.Trim()))
            {
                lblMensajeError.Text = "Debe ingresar la dirección";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "x", scriptError, true);
                txtDireccion.Focus();
                return;
            }
            if (cboDepartamento.SelectedIndex == 0)
            {
                lblMensajeError.Text = "Debe seleccionar el departamento";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "x", scriptError, true);
                cboDepartamento.Focus();
                return;
            }
            if (cboProvincia.SelectedIndex == 0)
            {
                lblMensajeError.Text = "Debe seleccionar la provincia";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "x", scriptError, true);
                cboProvincia.Focus();
                return;
            }
            if (cboDistrito.SelectedIndex == 0)
            {
                lblMensajeError.Text = "Debe seleccionar el distrito";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "x", scriptError, true);
                cboDistrito.Focus();
                return;
            }
            if (cboZonaRegistral.SelectedIndex <= 0) 
            {
                lblMensajeError.Text = "Debe seleccionar la zona registral";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "x", scriptError, true);
                cboZonaRegistral.Focus();
                return;
            }
            if (cboOficinaRegistral.Value == null || cboOficinaRegistral.Value.ToString() == "")
            {
                lblMensajeError.Text = "Debe seleccionar la oficina registral";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "x", scriptError, true);
                cboOficinaRegistral.Focus();
                return;
            }

            int? ID_ZONA_REGISTRAL = null;
            string COD_ZONA_REGISTRAL = null;
            string DES_ZONA_REGISTRAL = null;

            if (cboZonaRegistral.SelectedIndex > 0)
            {
                ID_ZONA_REGISTRAL = zbl.ObtenerID_ZONA_REGISTRAL(cboZonaRegistral.Value.ToString());
                COD_ZONA_REGISTRAL = cboZonaRegistral.Value.ToString();
                DES_ZONA_REGISTRAL = cboZonaRegistral.Text;
            }

             int? Id_OficinaRegistral = int.Parse(cboOficinaRegistral.Value.ToString());

            try
            {

                if (Request.QueryString["idCliente"] != null)
                {
                    int idCliente = int.Parse(Request.QueryString["idCliente"]);
                    cli.ID_CLIENTE = idCliente;
                    cli.COD_CLIENTE = lblCodigoCliente.Text;
                   // cli.NUM_SOCIEDAD = null;
                    cli.DES_CLIENTE = txtRazonSocial.Text.Trim().ToUpper();
                    cli.DES_CLIENTE2 = "";
                    cli.NIF = txtNumeroDocumento.Text.Trim();
                    cli.DES_DIRECCION = txtDireccion.Text.Trim().ToUpper();
                    cli.Telefono = txtTelefono1.Text.Trim().ToUpper();
                    cli.Telefono2 = txtTelefono2.Text.Trim().ToUpper();
                    cli.Grupo = "";
                    cli.COD_REGION = "";
                    cli.Departamento = cboDepartamento.Text;
                    cli.Provincia = cboProvincia.Text;
                    cli.Distrito = cboDistrito.Text;
                    cli.ID_ZONA_REGISTRAL = ID_ZONA_REGISTRAL.Value;
                    cli.COD_ZONA_REGISTRAL = COD_ZONA_REGISTRAL;
                    cli.DES_ZONA_REGISTRAL = DES_ZONA_REGISTRAL;
                    cli.ID_TIPO_NIF = nbl.ObtenerID_TIPO_NIF(cboTipoDocumento.Value.ToString());
                    cli.COD_TIPO_NIF = cboTipoDocumento.Value.ToString();
                    cli.DES_TIPO_NIF = cboTipoDocumento.Text;
                    cli.NOM_COMERCIAL = txtNombreComercial.Text.Trim().ToUpper();
                    cli.ID_CLIENTE_SUP = idCliente;
                    cli.IND_SAP = false;
                    cli.Id_OficinaRegistral = Id_OficinaRegistral.Value;
                    bl.Actualizar(cli);
                    lblMensaje.Text = "Cliente actualizado satisfactoriamente";
                }
                else
                {
                    int id_cliente = bl.ObtenerUltimoIdentity("TD_CLIENTE");
                    cli.COD_CLIENTE = id_cliente.ToString();
                   // cli.NUM_SOCIEDAD = null;
                    cli.DES_CLIENTE = txtRazonSocial.Text.Trim().ToUpper();
                    cli.DES_CLIENTE2 = "";
                    cli.NIF = txtNumeroDocumento.Text.Trim();
                    cli.DES_DIRECCION = txtDireccion.Text.Trim().ToUpper();
                    cli.Telefono = txtTelefono1.Text.Trim().ToUpper();
                    cli.Telefono2 = txtTelefono2.Text.Trim().ToUpper();
                    cli.Grupo = "";
                    cli.COD_REGION = "";
                    cli.Departamento = cboDepartamento.Text;
                    cli.Provincia = cboProvincia.Text;
                    cli.Distrito = cboDistrito.Text;
                    cli.ID_ZONA_REGISTRAL = ID_ZONA_REGISTRAL.Value;
                    cli.COD_ZONA_REGISTRAL = COD_ZONA_REGISTRAL;
                    cli.DES_ZONA_REGISTRAL = DES_ZONA_REGISTRAL;
                    cli.ID_TIPO_NIF = nbl.ObtenerID_TIPO_NIF(cboTipoDocumento.Value.ToString());
                    cli.COD_TIPO_NIF = cboTipoDocumento.Value.ToString();
                    cli.DES_TIPO_NIF = cboTipoDocumento.Text;
                    cli.NOM_COMERCIAL = txtNombreComercial.Text.Trim().ToUpper();
                    cli.ID_CLIENTE_SUP = id_cliente;
                    cli.IND_SAP = false;
                    cli.Id_OficinaRegistral = Id_OficinaRegistral.Value;
                    bl.Insertar(cli);

                    lblMensaje.Text = "Cliente registrado satisfactoriamente";
                    ASPxPageControl1.TabPages[1].Enabled = true;
                    ASPxPageControl1.TabPages[2].Enabled = true;
                    ASPxPageControl1.TabPages[3].Enabled = true;

                    string busqueda = "";
                    if (Request.QueryString["busqueda"] != null)
                    {
                        busqueda = Request.QueryString["busqueda"];
                    }
                    Response.Redirect("wFrmClienteRegistrar.aspx?idCliente=" + id_cliente.ToString() + "&id=" + idGestionComercial + "&busqueda=" + busqueda);
                }


                ScriptManager.RegisterStartupScript(this, typeof(Page), "x", scriptCorrecto, true);

            }
            catch (Exception ex)
            {
                lblMensajeError.Text = ex.Message;
                ScriptManager.RegisterStartupScript(this, typeof(Page), "x", scriptError, true);
            }
        }

        protected void btnAgregar_Click(object sender, EventArgs e)
        {
            try
            {
                int idCliente = int.Parse(Request.QueryString["idCliente"]);

                T_CLIENTE_VENDEDOR ecv = new T_CLIENTE_VENDEDOR();
                ecv.ID_ORG_VTA = int.Parse(cboOrganizacion.SelectedItem.Value.ToString());
                ecv.ID_CANAL_DISTRIB = int.Parse(cboCanal.SelectedItem.Value.ToString());
                ecv.ID_CLIENTE = idCliente;
                ecv.ID_VENDEDOR = int.Parse(cboSupervisor.SelectedItem.Value.ToString());

                clsT_CLIENTE_VENDEDORBL oev = new clsT_CLIENTE_VENDEDORBL();
                oev.Insertar(ecv);
                Listar();
                cboSupervisor.SelectedIndex = 0;
                cboCanal.SelectedIndex = 0;
                cboOrganizacion.SelectedIndex = 0;
            }
            catch (Exception)
            {

            }
        }

        protected void gv_RowDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
        {
            try
            {
                string PK = e.Keys[0].ToString();
                string[] arreglo = PK.Split(char.Parse("-"));
                int ID_ORG_VTA = int.Parse(arreglo[0].ToString());
                int ID_CANAL_DISTRIB = int.Parse(arreglo[1].ToString());
                int ID_CLIENTE = int.Parse(arreglo[2].ToString());

                T_CLIENTE_VENDEDOR ecv = new T_CLIENTE_VENDEDOR();
                ecv.ID_ORG_VTA = ID_ORG_VTA;
                ecv.ID_CANAL_DISTRIB = ID_CANAL_DISTRIB;
                ecv.ID_CLIENTE = ID_CLIENTE;

                clsT_CLIENTE_VENDEDORBL ocv = new clsT_CLIENTE_VENDEDORBL();
                ocv.Eliminar(ecv);
                e.Cancel = true;
                Listar();
            }
            catch (Exception)
            {

            }
        }

        protected void cboOrganizacion_SelectedIndexChanged(object sender, EventArgs e)
        {
            ListarCanal();
        }

        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            Buscar();
        }

        void Buscar()
        {
            if (Request.QueryString["idCliente"] != null)
            {
                int idCliente = int.Parse(Request.QueryString["idCliente"]);
                string DES_CLIENTE = txtBuscarNombre.Text.Trim();
                string NIF = txtBuscarRUC.Text.Trim();
                int filas = int.Parse(cboOpcion.SelectedItem.Value.ToString());

                gvBusqueda.DataSource = blCliente.ListarRazonesSocialesNoAgrupadas(idCliente, DES_CLIENTE, NIF, filas);
                gvBusqueda.DataBind();
            }
        }

        protected void btnAgregarRazonesSociales_Click(object sender, EventArgs e)
        {
            if (Request.QueryString["idCliente"] != null)
            {
                int idCliente = int.Parse(Request.QueryString["idCliente"]);
                int ID_CLIENTE;
                for (int i = 0; i < gvBusqueda.VisibleRowCount; i++)
                {
                    if (gvBusqueda.Selection.IsRowSelected(i))
                    {
                        ID_CLIENTE = int.Parse(gvBusqueda.GetRowValues(i, "ID_CLIENTE").ToString());
                        TD_CLIENTE eCliente = new TD_CLIENTE();
                        eCliente.ID_CLIENTE = ID_CLIENTE;
                        eCliente.ID_CLIENTE_SUP = idCliente;
                        blCliente.ActualizarRelacion(eCliente);
                    }
                }

                ListarRazonesSociales();
                pcClientes.ShowOnPageLoad = false;
            }
        }

        protected void btnQuitar_Click(object sender, EventArgs e)
        {
            if (Request.QueryString["idCliente"] != null)
            {
                int idCliente = int.Parse(Request.QueryString["idCliente"]);
                try
                {
                    int fila = gvRazonesSociales.FocusedRowIndex;
                    if (fila >= 0)
                    {
                        int ID_CLIENTE;
                        ID_CLIENTE = int.Parse(gvRazonesSociales.GetRowValues(fila, "ID_CLIENTE").ToString());

                        if (ID_CLIENTE.ToString() == idCliente.ToString())
                        {
                            lblMensajeError.Text = "Esta razón social no se puede quitar";
                            ScriptManager.RegisterStartupScript(this, typeof(Page), "x", scriptError, true);
                        }
                        else
                        {

                            TD_CLIENTE eCliente = new TD_CLIENTE();
                            eCliente.ID_CLIENTE = ID_CLIENTE;
                            eCliente.ID_CLIENTE_SUP = ID_CLIENTE;
                            blCliente.ActualizarRelacion(eCliente);

                            ListarRazonesSociales();

                            lblMensaje.Text = "La razón social se ha quitado satisfactoriamente";
                            ScriptManager.RegisterStartupScript(this, typeof(Page), "x", scriptCorrecto, true);

                        }
                    }
                    else
                    {
                        lblMensajeError.Text = "Debe seleccionar una razón social";
                        ScriptManager.RegisterStartupScript(this, typeof(Page), "x", scriptError, true);
                    }
                }
                catch (Exception ex)
                {
                    lblMensajeError.Text = ex.Message;
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "x", scriptError, true);
                }
            }
        }

        protected void gvBusqueda_PageIndexChanged(object sender, EventArgs e)
        {
            Buscar();
        }

        protected void btnAgregarRazonSocial_Click(object sender, EventArgs e)
        {
            pcClientes.ShowOnPageLoad = true;
        }

        protected void btnVerMapa_Click(object sender, EventArgs e)
        {
            CargarLocales();
            pcCreateAccount.ShowOnPageLoad = true;
        }

        protected void btnNuevoLocal_Click(object sender, EventArgs e)
        {
            int Id_Cliente = int.Parse(Request.QueryString["idCliente"]);
            Response.Redirect("wFrmClienteLocalActualizar.aspx?idCliente=" + Id_Cliente.ToString() + "&id=" + idGestionComercial);
        }

        protected void btnEditarLocal_Click(object sender, EventArgs e)
        {
            int indice = grdLocales.FocusedRowIndex;
            if (indice >= 0)
            {
                string Id_ClienteRetorno = Request.QueryString["idCliente"];

                int Id_Cliente = int.Parse(grdLocales.GetRowValues(indice, "ID_CLIENTE").ToString());

                List<object> keys = grdLocales.GetSelectedFieldValues(new string[] { grdLocales.KeyFieldName });
                if (keys.Count == 0)
                {
                    lblMensajeError.Text = "Debe seleccionar una fila de la grilla.";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "x", scriptError, true);
                }
                else
                {
                    string ID_LOCAL = keys[0].ToString();
                    Response.Redirect("wFrmClienteLocalActualizar.aspx?IdCliente=" + Id_Cliente.ToString() + "&IdLocal=" + ID_LOCAL + "&id=" + idGestionComercial + "&IdClienteRetorno=" + Id_ClienteRetorno);
                }
            }
        }

        protected void btnEliminarLocal_Click(object sender, EventArgs e)
        {
            int indice = grdLocales.FocusedRowIndex;
            if (indice >= 0)
            {
                try
                {
                    clsTD_Cliente_LocalBL oClienteLocal = new clsTD_Cliente_LocalBL();
                    int Id_Cliente = int.Parse(grdLocales.GetRowValues(indice, "ID_CLIENTE").ToString());

                    List<object> keys = grdLocales.GetSelectedFieldValues(new string[] { grdLocales.KeyFieldName });
                    int Id_Local = int.Parse(keys[0].ToString());

                    oClienteLocal.Eliminar(Id_Cliente, Id_Local);

                    ListarLocales();
                    pcCreateAccount.ShowOnPageLoad = false;
                    PopupMapaIndividual.ShowOnPageLoad = false;

                    lblMensaje.Text = "Local eliminado";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "x", scriptCorrecto, true);
                }
                catch (Exception ex)
                {
                    lblMensajeError.Text = ex.Message;
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "x", scriptError, true);
                }
            }
        }

        protected void cboZonaRegistral_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cboZonaRegistral.SelectedIndex > 0)
            {
                int Id_ZonaRegistral = int.Parse(cboZonaRegistral.Value.ToString());
                clsT_IMP_SUNARP_ZonaRegistralOficinaBL neg = new clsT_IMP_SUNARP_ZonaRegistralOficinaBL();
                cboOficinaRegistral.DataSource = neg.Listar(Id_ZonaRegistral);
                cboOficinaRegistral.TextField = "Sede";
                cboOficinaRegistral.ValueField = "Id_OficinaRegistral";
                cboOficinaRegistral.DataBind();
                cboOficinaRegistral.SelectedIndex = 0;

                ListEditItem l = new ListEditItem() { Text = "Seleccionar", Value = "" };
                cboOficinaRegistral.Items.Insert(0, l);
                cboOficinaRegistral.SelectedIndex = 0;
            }
        }
    }
}